package com.example.module_home.vm

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.example.lib_common.view.entity.NoticeEntity
import com.example.lib_common.view.model.BaseRepository
import com.example.lib_common.view.vm.BaseViewModel
import com.example.module_home.HomeActivity
import com.example.module_home.model.HomeRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import javax.inject.Inject

/**
 * 协程调度器Dispatchers
 * Dispatchers.Main:在主线程中调度(使用线程池，其中线程数64个)，适用于耗时多任务场景
 * Dispatchers.IO:在子线程中调度(在Ui线程，只有1个)，适用于UI更新
 * Dispatchers.Default:取决于调用方（固定数量线程池，其中线程数CPU个数+1），适用于少量任务复杂计算
 * Dispatchers.Unconfined:没有限制(没有限制线程数量)
 *
 */
@HiltViewModel
class HomeViewModel @Inject constructor(private val repo:HomeRepository):BaseViewModel(){
    val mSuccess = MutableLiveData<List<NoticeEntity>>()

    fun loadNoticeData(pageIndex:Int,pageSize:Int){
        mViewModelScope.launch(mDispatcher){
            val (code,data,message)=
                repo.loadNoticeData(pageIndex, pageSize)

            if(code==200){
                mSuccess.postValue(data)
            }else{
                mError.postValue(message)
            }

        }
    }
}
